package minijvm.engine;

import java.util.HashMap;

/**
 * 模拟java堆 实际上没有使用{@link HashMap}来模拟java堆 而是直接使用真实的java堆
 * 堆中存放{@link JavaObject}
 *
 * @author ChangLiang
 * @date 2020/4/28
 */
public class Heap {

    /**
     * 没有实现垃圾回收 所以对于下面新创建的对象 并没有记录到一个数据结构中
     */

    /**
     * 使用单例模式--饿汉式
     */
    private static Heap instance = new Heap();

    private Heap(){}

    public static Heap getInstance(){
        return instance;
    }

    public JavaObject newObject(String clzName) {
        JavaObject jo = new JavaObject(JavaObject.OBJECT);
        jo.setClassName(clzName);
        return jo;
    }

    public JavaObject newString(String value){
        JavaObject jo = new JavaObject(JavaObject.STRING);
        jo.setStringValue(value);
        return jo;
    }

    public JavaObject newInt(int value){
        JavaObject jo = new JavaObject(JavaObject.INT);
        jo.setIntValue(value);
        return jo;
    }
}
